<?php
/* 
 * Cette classe sert à l'implémentation d'un champ de formulaire
 * gérant le lien entre deux tables
 */
/*
class ChampLienTables
{
    // Variables
    var $nomChamp ;
    var $tableElementsLies ;
    var $champNomElementLie ;
    var $aucunPossible ;
    var $plusieursPossibles ;
    var $valeursDefaut ;

    // Constructeur
    function ChampLienTables ()
    {
        $this->valeursDefaut = array() ;
        $this->plusieursPossibles = false ;
        $this->aucunPossible = false ;
    }

    // Ajouter une valeur par défaut
    function valeurDefaut ($val)
    {
        if (!$this->plusieursPossibles) $this->valeursDefaut = array() ; // On réinitialise le tableau
                                                       // Pour qu'il n'y ait qu'un seul élément
        $this->valeursDefaut[] = $val ;
    }

    // Imprimer le champ
    function afficher ()
    {
        connect();
        $result = executerRequete("SELECT * FROM {$this->tableElementsLies};", $GLOBALS["debug"]);
        echo "<div class=\"ChampLienTables ChampLienTables_{$this->nomChamp}\">".PHP_EOL ;
        $multiple = $crochets = "" ;
        if ($this->plusieursPossibles)
        {
            $multiple = " multiple" ;
            $crochets = "[]" ;
        }
        echo "<select name=\"{$this->nomChamp}{$crochets}\" id=\"poste\" $multiple>".PHP_EOL ;
        if ($this->aucunPossible && !$this->plusieursPossibles)
        {
            echo '<option value="">Aucun</option>'.PHP_EOL ;
            //$description_hidden = '<input type="hidden" id="description'.$this->tableElementsLies.'_" value=""/>'.PHP_EOL ;
        }
        while ($row = mysql_fetch_assoc($result))
        {
            $selected = "" ;
            if (in_array($row['id'], $this->valeursDefaut)) $selected = " selected=\”selected\”" ;
            echo '<option value="'.$row["id"].'"'.$selected.'>'.$row[$this->champNomElementLie].'</option>'.PHP_EOL ;
            //$description_hidden .= "<input type=\"hidden\" id=\"description{$this->tableElementsLies}_".$row["id"]."\" value=\"".$row[$this->champDescriptionElementLie]."\"/>".PHP_EOL ;
        }
        //echo "<option id=\"nouveau{$this->tableElementsLies}\" value=\"nouveau{$this->tableElementsLies}\">Nouveau</option>".PHP_EOL ;
echo '</select>'.PHP_EOL ; //.$description_hidden.PHP_EOL ;
        // On garde tous les paramètres nécessaires pour le jQuery

        mysql_close();
        echo <<<END
        <div class="description"></div>
<script language="JavaScript" type="text/JavaScript">

$("div.ChampLienTables_{$this->nomChamp}").attr("tableElementsLies", "{$this->tableElementsLies}") ;

initialiserChampLienTables($("div.ChampLienTables_{$this->nomChamp}") ) ;
</script>

END;
        echo "</div>".PHP_EOL ;

    }
}*/

function champLienTables ($nomChamp, $tableElementsLies, $champNomElementLie, $default, $multiple=false, $aucunPossible = false, $moteurRecherche = false)
{
        // Traitement des données
        static $numero = 0 ; // pour que chaque champ soit repéré différemment
        $numero ++ ;
        connect();
        $result = executerRequete("SELECT * FROM {$tableElementsLies};", $GLOBALS["debug"]);
        $attrMultiple = $crochets = "" ;
        if ($multiple)
        {
            $attrMultiple = " multiple" ;
            $crochets = "[]" ;
        }
        // On s'arrange pour que la (ou les) valeurs par defaut soient un tableau.
        if (!is_array($default))
            {
            $default = array ($default) ;
        }


        echo "<div class=\"ChampLienTables\" id=\"ChampLienTables_{$numero}\">".PHP_EOL ;

        // Moteur de recherche
        if ($moteurRecherche)
        {
            echo "<div class=\"searchInput\"></div>" ;
        }

        // Champ select
        echo "<table><tr><td><select class=\"select_{$tableElementsLies}\" name=\"{$nomChamp}{$crochets}\" id=\"poste\" $attrMultiple>".PHP_EOL ;
        if ($aucunPossible && !$multiple)
        {
            echo '<option value="">Aucun</option>'.PHP_EOL ;
        }

        
        // On affiche les options
        while ($row = mysql_fetch_assoc($result))
        {
            $selected = "" ;
            if (in_array($row['id'], $default)) $selected = " selected=\"selected\"" ;
            echo '<option value="'.$row["id"].'"'.$selected.'>'.$row[$champNomElementLie].'</option>'.PHP_EOL ;
        }
        //echo "<option id=\"nouveau{$this->tableElementsLies}\" value=\"nouveau{$this->tableElementsLies}\">Nouveau</option>".PHP_EOL ;
        echo '</select>'.PHP_EOL ; //.$description_hidden.PHP_EOL ;
        // On garde tous les paramètres nécessaires pour le jQuery

        mysql_close();
        echo <<<END
        </td></tr><tr><td><div class="description"></div></td></tr></table>
<script language="JavaScript" type="text/JavaScript">

cadre = $("div#ChampLienTables_{$numero}") ;
cadre.attr("tableElementsLies", "{$tableElementsLies}") ;

//cadre.find("select").hide() ;

initialiserChampLienTables($("div#ChampLienTables_{$numero}") ) ;
</script>
END;
        echo "</div>".PHP_EOL ;
}
?>
